/*
 * Copyright (c) 2009-2013 EvTech Project
 * All rights reserved.
 * 
 * This file is part of LModeller.
 *
 * LModeller is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or 
 * (at your option) any later version.
 *
 * LModeller is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with LModeller.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */
package fi.honkalampisaatio.lmodeller.xml;

import java.util.ArrayList;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement(namespace = "fi.honkalampisaatio.lmodelling")
public class GameSettings {
	public enum RANDOMMENU_TYPE {SPINNER, TABLE};
	private ArrayList<BlockData> blocks;
	private ArrayList<User> users;
	private String musicFolder;
	private String fontName;
	private String directionColor;
	private String actionColor;
	private boolean showSettings = false;
	private GLSettings glSettings;
	private String language;
	private int minBlockCountInRandomMenu = 3;
	private int maxBlockCountInRandomMenu = 20;
	private int columnCountInRandomMenu = 10;
	private RANDOMMENU_TYPE randomMenuType = RANDOMMENU_TYPE.SPINNER;
	
	// XmLElementWrapper generates a wrapper element around XML representation
		@XmlElementWrapper(name = "blocks")
		// XmlElement sets the name of the entities
		@XmlElement(name = "block")
	public ArrayList<BlockData> getBlocks() {
		return blocks;
	}
	public void setBlocks(ArrayList<BlockData> blocks) {
		this.blocks = blocks;
	}

	// XmLElementWrapper generates a wrapper element around XML representation
		@XmlElementWrapper(name = "users")
		// XmlElement sets the name of the entities
		@XmlElement(name = "user")
	public ArrayList<User> getUsers() {
		return users;
	}
	public void setUsers(ArrayList<User> users) {
		this.users = users;
	}
	
	public String getMusicFolder() {
		return musicFolder;
	}
	public void setMusicFolder(String musicFolder) {
		this.musicFolder = musicFolder;
	}
	
	public String getFontName() {
		return fontName;
	}
	public void setFontName(String fontName) {
		this.fontName = fontName;
	}
	
	public GLSettings getGlSettings() {
		return glSettings;
	}
	public void setGlSettings(GLSettings glSettings) {
		this.glSettings = glSettings;
	}
	public String getDirectionColor() {
		return directionColor;
	}
	public void setDirectionColor(String directionColor) {
		this.directionColor = directionColor;
	}
	public String getActionColor() {
		return actionColor;
	}
	public void setActionColor(String actionColor) {
		this.actionColor = actionColor;
	}

	public String getLanguage() {
		return language;
	}
	public void setLanguage(String language) {
		this.language = language;
	}
	public int getMinBlockCountInRandomMenu() {
		return minBlockCountInRandomMenu;
	}
	public void setMinBlockCountInRandomMenu(int minBlockCountInRandomMenu) {
		this.minBlockCountInRandomMenu = minBlockCountInRandomMenu;
	}
	public int getMaxBlockCountInRandomMenu() {
		return maxBlockCountInRandomMenu;
	}
	public void setMaxBlockCountInRandomMenu(int maxBlockCountInRandomMenu) {
		this.maxBlockCountInRandomMenu = maxBlockCountInRandomMenu;
	}
	public int getColumnCountInRandomMenu() {
		return columnCountInRandomMenu;
	}
	public void setColumnCountInRandomMenu(int columnCountInRandomMenu) {
		this.columnCountInRandomMenu = columnCountInRandomMenu;
	}
	public RANDOMMENU_TYPE getRandomMenuType() {
		return randomMenuType;
	}
	public void setRandomMenuType(RANDOMMENU_TYPE randomMenuType) {
		this.randomMenuType = randomMenuType;
	}
	public boolean getShowExit() {
		return showSettings;
	}
	public void setShowExit(boolean showSettings) {
		this.showSettings = showSettings;
	}
}
